package DAO;

import javax.management.Query;
import util.HibernateUtil;
import java.util.List;   
import model.Cidade;
import org.hibernate.HibernateException;  
import org.hibernate.Session;  
import org.hibernate.Transaction;  

public class CidadeDAO {
    Cidade cidade = new Cidade();
    private Session sessao;
    private Transaction t;
    
    public void inserir(Cidade cidade) {
        try {
            startOperation();
            sessao.save(cidade);
            sessao.update(cidade);
            t.commit();
            sessao.close();
        } catch (HibernateException erro) {
            erro.printStackTrace();
        }
    }
    public List executarBusca(String query) {
        startOperation();
        List result = sessao.createQuery(query).list();
        return result;
    }
    
    public void alterar(Cidade cidade) {
        try {
            startOperation();
            sessao.update(cidade);
            sessao.getTransaction().commit();
            sessao.close();
            t.commit();
        } catch (HibernateException erro) {
            erro.printStackTrace();
        }
    }

    public void excluir(int id) {
        try {
            startOperation();
            Cidade cid = (Cidade) sessao.get(Cidade.class, id);
            sessao.delete(cid);  
            sessao.flush();  
            t.commit();
        } catch (HibernateException erro) {
            erro.printStackTrace();
        }
    }
    protected void startOperation() throws HibernateException {
        sessao = HibernateUtil.getSession();
        t = sessao.beginTransaction();
    }
}
